

package jumavidesktop.GUI.Mantenimientos.Camaras.Controlador;

import java.util.ArrayList;
import java.util.List;
import jumavidesktop.GUI.Mantenimientos.ControladorAbs;
import jumavidesktop.GUI.Mantenimientos.interfaz.IMantenimiento;
import jumavidesktop.Otros.Pojos.MyRespuesta;
import jumavidesktop.Persistencia.Dao.Implementaciones.DaoCamaras;
import jumavidesktop.Persistencia.Dao.Interfaces.IDao;
import jumavidesktop.Persistencia.Dao.Interfaces.IDaoCamaras;
import jumavidesktop.Persistencia.entidades.Camara;
import jumavidesktop.Persistencia.entidades.Configanpr;
import jumavidesktop.Persistencia.entidades.Configdetectionmotion;

/**
 *
 * @author vimso
 */
public class ControladorCamaras extends ControladorAbs<Camara> implements IMantenimiento<Camara> {

    
    private Camara camaraActual;
    private String criterioBusqueda;
    private IDaoCamaras daoCamara= new DaoCamaras();
    private List<String> orCampos;
    
    //constantes privadas, para ordenar los registros 
    public static final String orNombre="nombre";

    public ControladorCamaras() {
        this.orCampos= new ArrayList<>();
        this.orCampos.add(orNombre);
        this.setCriterioBusqueda(this.orCampos.get(0));    
    }
    
    
    @Override
    public String getValorSegunCriterio() {
        if (this.camaraActual!=null) {
            return this.camaraActual.getNombre();
        }
        return "";
        
    }

    @Override
    public String getCriterioBusqueda() {
            return criterioBusqueda;
    }

    @Override
    public String getNombreJPQLEntidad() {
        return "Camara";
    }

    @Override
    public IDao getDaoGenerico() {
        return this.daoCamara;
    }

    @Override
    public Camara getEntidadActual() {
        return  camaraActual;
    }

    @Override
    public void setEntidadActual(Camara entidad) {
        this.camaraActual=entidad;
    }

    @Override
    public String getId() {
        if (this.camaraActual!=null && this.camaraActual.getId()!=null) {
            return this.camaraActual.getId().toString();
        }
        return "";
    }

    @Override
    public String getCampoId() {
        return "id";
    }

    @Override
    public List<String> ordenarPor() {
        return this.orCampos;
    }

    @Override
    public MyRespuesta guardar(Camara elemento) {
          MyRespuesta res;
        
        if (this.isCreandoEntidad()) {
            res = daoCamara.guardarCamara(elemento);
        } else {
            
            //Reasigno los id a los valores recuperados por las cajas 
            elemento.setId(camaraActual.getId());
            Configdetectionmotion confMotionAux=elemento.getConfigdetectionmotion();
            
            confMotionAux.setId(camaraActual.getConfigdetectionmotion().getId());
            
            Configanpr confAnprAux=elemento.getConfiganpr();
            confAnprAux.setId(camaraActual.getConfiganpr().getId());
            
            elemento.setConfiganpr(confAnprAux);
            elemento.setConfigdetectionmotion(confMotionAux);
            
            //Actualizo la entidad
            res = daoCamara.actualizarCamara(elemento);
        }
        
        if(res.getTodoOK()){
            setEntidadActual(elemento);
            this.setCreandoEntidad(false);
        }
        return res;
    }

    @Override
    public MyRespuesta eliminar(Camara elemento) {
        return daoCamara.eliminarCamara(elemento);
    }

    @Override
    public void campoBusqueda(String campoOrden) {
        this.setCriterioBusqueda(criterioBusqueda);
    }

    public void setCamaraActual(Camara camaraActual) {
        this.camaraActual = camaraActual;
    }

    public List<String> getOrCampos() {
        return orCampos;
    }

    public void setOrCampos(List<String> orCampos) {
        this.orCampos = orCampos;
    }

    public void setCriterioBusqueda(String criterioBusqueda) {
        this.criterioBusqueda = criterioBusqueda;
    }
    
    

}
